#ifndef __DELAY_H
#define __DELAY_H
// #include <STC8G.h>
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
void delay1us();       //延迟1微秒
void delay5us();       //延迟5微秒
void delay10us();      //延迟10微秒
void delay50us();      //延迟50微秒
void delay100us();     //延迟100微秒
void delay1ms();       //延迟1毫秒
void delay2ms();       //延迟2毫秒
void delay6ms();       //延迟6毫秒
void delay(uint time); //延迟time毫秒

//========================================================================
// 描述: 延迟1微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay1us() //@24.000MHz
{
    uchar i;

    i = 6;
    while (--i)
        ;
}

//========================================================================
// 描述: 延迟5微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay5us() //@24.000MHz
{
    uchar i;

    i = 38;
    while (--i)
        ;
}

//========================================================================
// 描述: 延迟10微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay10us() //@24.000MHz
{
    uchar i;

    i = 78;
    while (--i)
        ;
}

//========================================================================
// 描述: 延迟50微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay50us() //@24.000MHz
{
    uchar i, j;

    _nop_();
    i = 2;
    j = 140;
    do
    {
        while (--j)
            ;
    } while (--i);
}

//========================================================================
// 描述: 延迟100微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay100us() //@24.000MHz
{
    uchar i, j;

    i = 4;
    j = 27;
    do
    {
        while (--j)
            ;
    } while (--i);
}

//========================================================================
// 描述: 延迟1毫秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay1ms() //1毫秒@24.000MHz
{
    uchar i, j;
    _nop_();
    i = 32;
    j = 40;
    do
    {
        while (--j)
            ;
    } while (--i);
}
//========================================================================
// 描述: 延迟2毫秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay2ms() //@24.000MHz
{
    unsigned char i, j;

    _nop_();
    _nop_();
    i = 63;
    j = 83;
    do
    {
        while (--j)
            ;
    } while (--i);
}
//========================================================================
// 描述: 延迟6毫秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay6ms() //@24.000MHz
{
    unsigned char i, j;

    _nop_();
    _nop_();
    _nop_();
    i = 187;
    j = 0;
    do
    {
        while (--j)
            ;
    } while (--i);
}
//========================================================================
// 描述: 延迟指定毫秒.
// 参数: 延迟时间（1-65535）.
// 返回: none.
//========================================================================
void delay(uint time)
{
    if (time < 1)
    {
        time = 1;
    }
    do
    {
        delay1ms();
    } while (--time);
}

#endif //delay.h